$(function () {//加载表格
    initData();
    comboboxTypeChanage();
})

var jobCategorylist; //采集任务的集合
var jobRelationList;// 依赖关系信息
// 初始化加载下拉框的值
function initData() {
    $.ajax({
            type: "post",
            url: kettle + "/jobDuties/init",
            dataType: "json",
            success: function (data) {
                var jobDutiesList = data.data.jobDutiesList; //采集任务
                if (!isNull(jobDutiesList)) {  //采集任务
                    $("#dutiesName").combobox("loadData", jobDutiesList);
                } else {
                    $.messager.alert('系统提示', "你还没有采集任务信息，请维护采集任务信息！", 'error');
                    return;
                }
                var jobDatasourceList = data.data.jobDatasourceList; //数据库连接
                if (!isNull(jobDatasourceList)) {  //数据库连接
                    $("#inputDataId").combobox("loadData", jobDatasourceList);
                    $("#outputDataId").combobox("loadData", jobDatasourceList);
                }
                jobCategorylist = data.data.jobCategorylist; //采集任务
                jobRelationList = data.data.jobRelationList; //任务关联关系
                if (isNull(jobCategorylist)) {
                    $.messager.alert('系统提示', "你还没有采集任务信息，请维护采集任务信息！", 'error');
                    return;
                }
                var width = 90 / jobCategorylist.length + 350;
                for (var key in jobCategorylist) {
                    $("#Tabs").append("<div style='display: inline-block;width: " + width + "px;height:100%;float: left;margin-left: 15px'>" +
                        "<form method='post' id='tabfrom2'><br><table class='form-table'><tr>" +
                        "<td>任务名称：</td>" +
                        "<td><input id='selTaskName" + key + "' onchange='doSearch(" + key + ")' editable='true' class='easyui-validatebox'/></td>" +
                        "</tr></table><br></form>" +
                        "<div id='dg" + key + "'></div>"
                        + "</div>"
                    );
                    getDatagrid(key, jobCategorylist[key].id, jobCategorylist[key].categoryName, jobDutiesList[0].id);
                }
                $.parser.parse("#Tabs");//重新渲染页面，解决样式不生效
                $('#dutiesName').combobox({
                    onChange: function (n, o) {
                        for (var key in jobCategorylist) {
                            getDatagrid(key, jobCategorylist[key].id, jobCategorylist[key].categoryName, n);
                        }
                    }
                });
                $('#dutiesName').combobox('selectedIndex', 0); //选中第一个
                $("#selTaskName" + key).validatebox({
                    onChange: function () {
                        doSearch(key);
                    }
                });

                if (successcode != data.code) {
                    return errorHandle(data);
                }
            }, error: function (data) {
                $.messager.progress('close');
                $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
            }
        }
    );
}

//搜索的方法
function doSearch(key) {
    var queryParams = $("#dg" + key).datagrid("options").queryParams;
    queryParams["name"] = $("#selTaskName" + key).val();
    $("#dg" + key).datagrid("options").queryParams = queryParams;
    $("#dg" + key).datagrid("load");
}

/**
 * 加载采集任务对应的作业任务表格信息
 */
function getDatagrid(key, categoryId, name, dutiesId) {
    $('#dg' + key).datagrid({
        loadMsg: '数据加载中，请稍后...',
        url: !isNull(dutiesId) ? kettle + '/jobTask/queryDutiesJobTask' : kettle + '/jobTask/queryCategoryJobTask',
        // pagination: true,
        singleSelect: false,//如果为true，则只允许选择一行。
        title: name,
        // pageSize: pageSize,
        // pageList: pageList,
        checkOnSelect: true,//当用户点击行的时候该复选框就会被选中或取消选中。
        striped: true,//是否显示斑马线效果。
        rownumbers: true,// 显示一个行号列
        fitColumns: false,//真正的自动展开/收缩列的大小，以适应网格的宽度，防止水平滚动。
        queryParams: {
            categoryId: categoryId,
            dutiesId: dutiesId
        },
        columns: [[
            {field: 'itemid', title: 'Order ID', width: 80, checkbox: true},
            {field: 'categoryId', title: '分类ID', hidden: 'true'},
            {field: 'name', title: '作业任务名称', width: 100},
            {
                field: 'status', title: '状态', hidden: 'true', formatter: function (value, row, index) {
                    var rows = $('#dg' + key).datagrid('getRows').length;
                    if (0 == index) {
                        return "<a href='javascript:void(0)' onclick='moveDownDatagrid(&apos;" + '#dg' + key + "&apos;,&apos;" + index + "&apos;)'>下移</a>";
                    } else if (index == rows - 1) {
                        return "<a href='javascript:void(0)' onclick='moveUpDatagrid(&apos;" + '#dg' + key + "&apos;,&apos;" + index + "&apos;)'>上移</a>";
                    } else {
                        return "<a href='javascript:void(0)' onclick='moveUpDatagrid(&apos;" + '#dg' + key + "&apos;,&apos;" + index + "&apos;)'>上移</a>"
                            + "&nbsp;|&nbsp;<a href='javascript:void(0)' onclick='moveDownDatagrid(&apos;" + '#dg' + key + "&apos;,&apos;" + index + "&apos;)'>下移</a>";
                    }
                }
            }/*,
            {field: 'sequence', title: '顺序'}*/
        ]],
        onLoadSuccess: function (data) {
            if (isNull(dutiesId)) { //任务管理的时候选中采集任务下的作业任务
                $.each(data.rows, function (index1, item1) {
                    var listDuitesTask = queryDutiesJobTask(categoryId);
                    $.each(listDuitesTask, function (index2, item2) {
                        if (item1.id == item2.id) {
                            $('#dg' + key).datagrid('checkRow', index1);
                        }
                    });
                });
                $('#dg' + key).datagrid("showColumn", "status");//显示datagrid中的xx列
            }
        },
        loadFilter: function (data) { //加载后台数据
            if (successcode != data.code) {
                return errorHandle(data);
            }
            return data.data;
        },
        //双击事件
        onDblClickRow: function (rowIndex, rowData) {
            getTaskDetail(rowData.id);
        },
        onCheck: function (node, checked) { //选中
            checkRowDatagrid(checked, "checked")
        },
        onUncheck: function (node, unChecked) { //取消选中
            checkRowDatagrid(unChecked, "unChecked")
        }
    }).datagrid("columnMoving");;
}


// 查询采集任务下的作业任务
function queryDutiesJobTask(categoryId) {
    var result = "";
    $.ajax({
            type: "post",
            url: kettle + '/jobTask/queryDutiesJobTask',
            dataType: "json",
            async: false,
            data: {
                categoryId: categoryId,
                dutiesId: $('#dutiesName').combobox('getValue')
            },
            success: function (data) {
                if (successcode != data.code) {
                    return errorHandle(data);
                }
                result = data.data;
            }, error: function (data) {
                $.messager.progress('close');
                $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
            }
        }
    );
    return result;
}

//更新任务关联关系信息
function updateJobRelation() {
    $.ajax({
            type: "post",
            url: kettle + "/jobTask/updateJobRelation",
            dataType: "json",
            data: {},
            success: function (data) {
                $.messager.progress('close');
                if (successcode != data.code) {
                    return errorHandle(data);
                }
                $.messager.show({title: '系统提示', msg: data.message});
            }, error: function (data) {
                $.messager.progress('close');
                $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
            }
        }
    );
}

/**
 * 依赖关系的选中
 */
function checkRowDatagrid(checked, type) {
    // 循环每个表格个中，有依赖关系的选中
    for (var key in jobCategorylist) {
        var rows = $('#dg' + key).datagrid('getRows');
        for (var key2 in rows) {
            for (var key3 in jobRelationList) { // 循环依赖关系
                if (checked.id == jobRelationList[key3].taskId && rows[key2].id == jobRelationList[key3].relationTaskId) {
                    if ("checked" == type) {
                        $('#dg' + key).datagrid('checkRow', key2);
                    } else {
                        $('#dg' + key).datagrid('uncheckRow', key2);
                    }
                }
            }
        }
    }
}

/**
 * 任务管理编辑的时候加载所有的
 */
function manageEditJobDuties() {
    for (var key in jobCategorylist) {
        getDatagrid(key, jobCategorylist[key].id, jobCategorylist[key].categoryName, null);
    }
    $("#saveDutiesTask").show();
    $("#backDutiesTask").show();
}

// 保存
function saveDutiesTask() {
    var dutiesTaskArr = [];
    var dutiesId = $("#dutiesName").combobox("getValue");
    var index = 0;
    for (var key in jobCategorylist) {
        // 获取每个表选中的数据
        var rows = $('#dg' + key).datagrid('getSelections');
        for (var i = 0; i < rows.length; i++) {
            var dutiesTask = new Object();
            dutiesTask.dutiesId = dutiesId;
            dutiesTask.taskId = rows[i].id;
            dutiesTask.status = 1;
            dutiesTask.sequence = index;//获取行号;
            dutiesTaskArr.push(dutiesTask);
            index++;
        }
    }
    $.messager.confirm('系统提示', '确定要保存采集任务信息吗？', function (param) {
        if (!param) {
            return;
        }
        $.ajax({
                type: "post",
                url: kettle + "/jobDutiesTask/addJobDutiesTask",
                dataType: "json",
                data: {
                    jobDutiesTask: JSON.stringify(dutiesTaskArr)
                },
                success: function (data) {
                    $.messager.progress('close');
                    if (successcode != data.code) {
                        return errorHandle(data);
                    }
                    $("#saveDutiesTask").hide();
                    $("#backDutiesTask").hide();
                    //重新按照选中得采集任务加载对应得作业任务列表信息
                    for (var key in jobCategorylist) {
                        getDatagrid(key, jobCategorylist[key].id, jobCategorylist[key].categoryName, dutiesId);
                    }
                    $.messager.show({title: '系统提示', msg: data.message});
                }, error: function (data) {
                    $.messager.progress('close');
                    $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
                }
            }
        );
    });
}

// 取消
function backDutiesTask() {
    $("#saveDutiesTask").hide();
    $("#backDutiesTask").hide();
    //重新按照选中得采集任务加载对应得作业任务列表信息
    var dutiesId = $("#dutiesName").combobox("getValue");
    for (var key in jobCategorylist) {
        getDatagrid(key, jobCategorylist[key].id, jobCategorylist[key].categoryName, dutiesId);
    }
}

/***
 * 采集任务
 */
function manageJobDuties() {
    $('#dlgDuties').dialog({
        title: "任务管理",
    }).dialog('open');

    $('#dgDuties').datagrid({
        loadMsg: '数据加载中，请稍后...',
        url: kettle + '/jobDuties/listInfo',
        // pagination: true,
        singleSelect: false,//如果为true，则只允许选择一行。
        title: name,
        // pageSize: pageSize,
        // pageList: pageList,
        checkOnSelect: true,//当用户点击行的时候该复选框就会被选中或取消选中。
        striped: true,//是否显示斑马线效果。
        rownumbers: true,// 显示一个行号列
        fitColumns: false,//真正的自动展开/收缩列的大小，以适应网格的宽度，防止水平滚动。
        columns: [[
            {field: 'itemid', title: 'Order ID', width: 80, checkbox: true},
            {field: 'id', title: '分类ID', hidden: 'true'},
            {field: 'dutiesName', title: '任务名称'},
            {
                field: 'status', title: '状态', formatter: function (value, row, index) {
                    if (1 == value) {
                        return "<a href='javascript:void(0)' onclick='updateJobDuties(&apos;" + row['id'] + "&apos;,&apos;" + 2 + "&apos;)'>启用</a>";
                    } else {
                        return "<a href='javascript:void(0)' onclick='updateJobDuties(&apos;" + row['id'] + "&apos;,&apos;" + 1 + "&apos;)'>禁用</a>";
                    }
                }
            }/*,
            {field: 'sequence', title: '顺序'}*/
        ]],
        loadFilter: function (data) { //加载后台数据
            if (successcode != data.code) {
                return errorHandle(data);
            }
            return data.data;
        },
        //双击事件
        onDblClickRow: function (rowIndex, rowData) {
            viewDuties(rowData)
        }
    }).datagrid("columnMoving");;
}

function viewDuties(rowData) {
    $('#myform').form('disableValidation');//清除验证样式
    $('#dlg').dialog({
        title: "采集任务",
        buttons: [{
            text: '返回',
            iconCls: 'icon-back',
            handler: function () {
                $('#dlg').dialog('close');
            }
        }
        ]
    }).dialog('open');
    $('#myform').form('load', rowData);//页面赋值
}

/**
 * 修改状态
 * @param id
 * @param status
 */
function updateJobDuties(id, status) {
    $.ajax({
            type: "post",
            url: kettle + "/jobDuties/editJobDuties",
            dataType: "json",
            data: {
                id: id,
                status: status
            },
            success: function (data) {
                if (successcode != data.code) {
                    return errorHandle(data);
                }
                if (1 == status) {
                    $.messager.show({title: '系统提示', msg: "启用采集任务成功"});
                } else {
                    $.messager.show({title: '系统提示', msg: "禁用采集任务成功"});
                }
                $("#dgDuties").datagrid("load");
            }, error: function (data) {
                $.messager.progress('close');
                $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
            }
        }
    );
}

/**
 * 新增采集任务信息方法
 */
function addDuties() {
    $("#myform").form('clear');//添加之前清空表达信息
    $('#myform').form('enableValidation');//设置验证样式
    $('#dlg').dialog({
        title: "新增采集任务信息",
        buttons: [
            {
                text: '保存',
                iconCls: 'icon-save',
                handler: function () {
                    saveItemDuties(1);
                }
            }, {
                text: '返回',
                iconCls: 'icon-back',
                handler: function () {
                    $('#dlg').dialog('close');
                }
            }
        ]
    }).dialog('open');
    $('#dutiesStatus').combobox('selectedIndex', 0); //选中第一个
}

/**
 * 修改采集任务方法
 */
function editDuties() {
    $('#myform').form('enableValidation');//设置验证样式
    var arr = $('#dgDuties').datagrid('getSelections');
    if (null == arr || arr.length != 1) {
        $.messager.alert('系统提示', "请选择一行数据！", 'warning');
        return;
    }
    $('#dlg').dialog({
        title: "修改采集任务信息",
        buttons: [
            {
                text: '保存',
                iconCls: 'icon-save',
                handler: function () {
                    saveItemDuties(2);
                }
            }, {
                text: '返回',
                iconCls: 'icon-back',
                handler: function () {
                    $('#dlg').dialog('close');
                }
            }
        ]
    }).dialog('open');
    $('#myform').form('load', arr[0]);//页面赋值
}

/**
 * 保存采集任务信息的方法
 */
function saveItemDuties(ftype) {
    //验证表单信息验证表单信息
    if (!$("#myform").form('validate')) { //
        return;
    }
    var url = kettle + "/jobDuties/editJobDuties";
    if (1 == ftype) {
        url = kettle + "/jobDuties/addJobDuties";
    }
    $.messager.confirm('系统提示', "确定保存采集任务信息吗？", function (parm) {
        if (!parm) {
            return;
        }
        $('#myform').form('submit', {
            url: url,
            onSubmit: function () {
                $.messager.progress({text: '正在处理中...',});
            }, success: function (data) {
                $.messager.progress('close');
                try {
                    data = JSON.parse(data);
                    if (successcode != data.code) {
                        return errorHandle(data);
                    }
                    //关闭弹出窗口
                    $('#dlg').dialog('close');
                    $.messager.show({title: '系统提示', msg: data.message});
                    window.location.reload();
                } catch (e) {
                    $.messager.progress('close');
                    $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
                }
            }
        });
    });
}

/**
 * 删除采集任务信息方法
 */
function delDuties() {
    var arr = $('#dgDuties').datagrid('getSelections');
    if (null == arr || arr.length == 0) {
        $.messager.alert('系统提示', "请选择你要删除的数据！", 'warning');
        return;
    }
    $.messager.confirm('系统提示', '确定要删除这个资采集任务信息吗？分类下的所有任务信息也会被删除', function (param) {
        var ids = [];
        for (var i = 0; i < arr.length; i++) {
            ids.push(arr[i].id);
        }
        $.messager.progress({text: '正在处理中...',});
        $.ajax({
                type: "post",
                url: kettle + "/jobDuties/delJobDuties",
                dataType: "json",
                data: {
                    ids: JSON.stringify(ids)
                },
                success: function (data) {
                    $.messager.progress('close');
                    if (successcode != data.code) {
                        return errorHandle(data);
                    }
                    $.messager.show({title: '系统提示', msg: data.message});
                    window.location.reload();
                }, error: function (data) {
                    $.messager.progress('close');
                    $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
                }
            }
        );
    });
}


/**
 * 执行任务方法
 */
function executeJobDuties() {
    var arr = [];
    for (var key in jobCategorylist) {
        arr.push($('#dg' + key).datagrid('getSelections'));
    }
    if (null == arr || arr.length == 0) {
        $.messager.alert('系统提示', "请选择你要执行任务的数据！", 'warning');
        return;
    }
    var ids = [];
    for (var key in arr) {
        var arr2 = arr[key];
        for (var key2 in arr2) {
            if (1 == arr2[key2].status) { //启用状态的
                ids.push(arr2[key2].id);
            }
        }
    }
    if (null == ids || ids.length == 0) {
        $.messager.alert('系统提示', "你选中的任务中没有启用状态的任务！", 'warning');
        return;
    }
    $.messager.confirm('系统提示', '确定要执行' + ids.length + '条任务信息吗？', function (param) {
        if (!param) {
            return;
        }
        $.messager.progress({text: '正在处理中...',});
        getExecuteJobTaskInfo(ids)
    });
}
